﻿using System;
using System.Collections.Generic;

using System.Text;

namespace Sinacor.Tools.Entidade
{
    [Serializable()]
    public class FiltroMensagem : IComparer<FiltroMensagem>, ICloneable
    {
        private string _mensagem;
        public string Mensagem
        {
            get { return this._mensagem; }
            set { this._mensagem = value; }
        }

        private Enum.TipoFiltroMensagem  _tipoFiltroMensagem;
        public Enum.TipoFiltroMensagem TipoFiltroMensagem
        {
            get { return this._tipoFiltroMensagem; }
            set { this._tipoFiltroMensagem = value; }
        }

        private static string _propriedadeSort = string.Empty;
        public static string PropriedadeSort
        {
            set { _propriedadeSort = value; }
        }

        #region IComparer<TipoMensagem> Members

        public int Compare(FiltroMensagem x, FiltroMensagem y)
        {
            int resultado = 0;
            switch (_propriedadeSort.ToLower())
            {
                case "Mensagem":
                    resultado = x.Mensagem.CompareTo(y.Mensagem);
                    break;

                default:                    
                        resultado = x.TipoFiltroMensagem.CompareTo(y.TipoFiltroMensagem);                    
                    break;
            }
            return resultado;
        }

        #endregion

        #region ICloneable Members

        public object Clone()
        {
            FiltroMensagem msg = new FiltroMensagem();
            msg._mensagem = this._mensagem ;

            msg._tipoFiltroMensagem = this._tipoFiltroMensagem;
            
            return msg;
        }

        #endregion
   
    }
}
